-- @Author: 作者QQ201878826
-- @Date:   2022-01-15 09:24:22
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2022-07-25 04:18:06
-- @Author: 作者QQ381990860
-- @Date:   2022-01-15 09:24:22
-- @Last Modified by:   作者QQ201878826
-- @Last Modified time: 2022-02-15 12:30:12
-- @Author: 作者QQ381990860
-- @Date:   2021-12-24 20:13:46
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2022-01-12 22:03:59
-- @Author: 作者QQ381990860
-- @Date:   2021-12-24 20:13:46
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2021-12-26 11:31:35
local 藏宝阁处理类 = class()

function 藏宝阁处理类:初始化()
end

function 藏宝阁处理类:数据处理(id, 参数, 序号, 内容)
	-- if 序号 == 1 then
 --     if  f函数.写配置(ServerDirectory.."玩家信息/账号" .. 玩家数据[id].账号 .. "/账号.txt", "账号信息", "仙玉",0)
 --      == nil or  f函数.写配置(ServerDirectory.."玩家信息/账号" .. 玩家数据[id].账号 .. "/账号.txt", "账号信息", "仙玉",0)
 --       == "" or  f函数.写配置(ServerDirectory.."玩家信息/账号" .. 玩家数据[id].账号 .. "/账号.txt", "账号信息", "仙玉",0) == "空" then
 --            f函数.写配置(ServerDirectory.."玩家信息/账号" .. 玩家数据[id].账号 .. "/账号.txt", "账号信息", "仙玉",0)

 --        end
 --        local 仙玉=f函数.读配置(ServerDirectory.."玩家信息/账号" .. 玩家数据[id].账号 .. "/账号.txt", "账号信息", "仙玉") + 0

	-- 	    发送数据(玩家数据[id].连接id,20074,{数据=藏宝阁数据,仙玉=仙玉})
	-- 	    if 观察藏宝阁数据 == nil then
	-- 	       观察藏宝阁数据 = {}
	-- 	    end
	-- 	    观察藏宝阁数据[id] = 1
    if 序号 == 1 then
      local 点卡=f函数.读配置(ServerDirectory.."玩家信息/账号" .. 玩家数据[id].账号 .. "/账号.txt", "账号信息", "点卡") + 0
      发送数据(玩家数据[id].连接id,20074,{数据=藏宝阁数据,点卡=点卡})
      if 观察藏宝阁数据 == nil then
         观察藏宝阁数据 = {}
      end
      观察藏宝阁数据[id] = 1
  elseif 序号 == 2 then --上架道具
    self:藏宝阁上架(id,参数,内容+0)
  elseif 序号 == 3 then --上架召唤兽
    self:藏宝阁上架召唤兽(id,参数,内容+0)
  elseif 序号 == 4 then --上架召唤兽
    观察藏宝阁数据[id] = nil
	elseif 序号 == 5 then
	self:藏宝阁上架银两(id,参数,内容+0)
  elseif 序号 == 6 then --购买处理
    self:藏宝阁购买处理(id,参数,内容+0)
  elseif 序号 == 7 then --取回上架
    self:藏宝阁取回处理(id,参数,内容+0)
  elseif 序号 == 8 then
    发送数据(玩家数据[id].连接id, 200767, 道具处理类:索要道具1(id,"包裹"))
  elseif 序号 == 9 then
    发送数据(玩家数据[id].连接id, 20077, 玩家数据[id].召唤兽.数据)
  elseif 序号 == 10 then
    发送数据(玩家数据[id].连接id, 20078, 玩家数据[id].角色.道具.货币.银子)



	end
end
function 藏宝阁处理类:藏宝阁上架银两(id,数量,价格)
  if tonumber(数量) == nil or tonumber(价格) ==nil then
    return
  end
  if 银子检查(id,数量)==false then
    发送数据(玩家数据[id].连接id,7,"#y/你没那么多银子")
  elseif tonumber(价格) == nil or tonumber(价格) < 1 then
    发送数据(玩家数据[id].连接id, 7, "#y/请正确输入价格")
    return 0
  else
      角色处理类:扣除银子(玩家数据[id],数量,"上架藏宝阁")
      藏宝阁数据["银两"][#藏宝阁数据["银两"]+1] = {数额=数量,价格=价格,所有者=id,结束时间=os.time()+2592000}
      发送数据(玩家数据[id].连接id, 7, "#y/上架成功")
    for i,v in pairs(观察藏宝阁数据) do
      if 玩家数据[i] ~= nil then
        发送数据(玩家数据[i].连接id,200756, 藏宝阁数据)
      else
        观察藏宝阁数据[i] = nil
      end
    end
    end
end
function 藏宝阁处理类:藏宝阁上架召唤兽(id,编号,价格)
  if 玩家数据[id].召唤兽.数据[编号] == nil then
    发送数据(玩家数据[id].连接id, 7, "#y/你没有这样的召唤兽")
    return 0
  elseif 玩家数据[id].召唤兽:取装备状态(编号)  then
    发送数据(玩家数据[id].连接id, 7, "#y/请将该召唤兽装备卸下后再进行交易")
    return 0
  elseif tonumber(价格) == nil or tonumber(价格) < 1 then
    发送数据(玩家数据[id].连接id, 7, "#y/请正确输入物品的价格")
    return 0
  elseif #玩家数据[id].召唤兽.数据[编号].技能 <  8 then
    发送数据(玩家数据[id].连接id, 7, "#y/召唤兽上架技能要求最少8个")
    return 0
  -- elseif 玩家数据[id].召唤兽.数据[编号].成长 <  1.3 then
  --   发送数据(玩家数据[id].连接id, 7, "#y/召唤兽上架技能要求最少12个")
  --   return 0
  else
    藏宝阁数据["召唤兽"][#藏宝阁数据["召唤兽"]+1] = {召唤兽=玩家数据[id].召唤兽.数据[编号],价格=价格,所有者=id,结束时间=os.time()+2592000}

		if 玩家数据[id].召唤兽.数据.参战 == 编号 then
			玩家数据[id].召唤兽.数据.参战 = 0
			发送数据(玩家数据[id].连接id, 2008, 编号)
		end
	发送数据(玩家数据[id].连接id, 2005, 玩家数据[id].召唤兽:取头像数据())
    table.remove(玩家数据[id].召唤兽.数据,编号)
    发送数据(玩家数据[id].连接id, 7, "#y/上架成功")
    for i,v in pairs(观察藏宝阁数据) do
      if 玩家数据[i] ~= nil then
        发送数据(玩家数据[i].连接id,200756 , 藏宝阁数据)
      else
        观察藏宝阁数据[i] = nil
      end
    end
  end
end


function 藏宝阁处理类:藏宝阁上架(id,编号,价格) --上架手续费 第二要限制出售类型 装备类 120级以上 其他
  local 物品id = 玩家数据[id].角色.道具.包裹[编号]
  local 道具类型 = 玩家数据[id].物品[物品id].类型
  local 类型 = "其他"

  if 玩家数据[id].角色.道具.包裹[编号] == nil then
    发送数据(玩家数据[id].连接id, 7, "#y/你没有这样的道具")
    return 0
  elseif 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]] == nil then
    发送数据(玩家数据[id].连接id, 7, "#y/出售的物品不存在")
    return 0
  elseif tonumber(价格) == nil or tonumber(价格) < 1 then
    发送数据(玩家数据[id].连接id, 7, "#y/请正确输入物品的价格")
    return 0
  elseif 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "飞行符"
    or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "摄妖香"
     or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "珍珠"
      or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "天眼通符"
        or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "金柳露"
         or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "超级金柳露"
          or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "玄武石"
           or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "青龙石"
            or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "白虎石"
             or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "朱雀石"
              or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "海马"
               or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "秘制红罗羹"
                or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "秘制绿罗羹"
                 or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "洞冥草"
                  or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "月华露"
                   or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "修炼果"
                    or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "九转金丹"
                     or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "易经丹"
                      or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "玉葫灵髓"
                       or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "清灵净瓶"
                        or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "彩果"
                         or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "金银锦盒"
                          or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "空白强化符"
                           or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "碎星锤"
                            or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "神兵图鉴"
                             or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "灵宝图鉴"
                              or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "含沙射影"
                               or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "符石卷轴"
                                or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "召唤兽内丹"
                                 or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "元宵"
                                  or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "低级清灵净瓶"
                                   or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "中级清灵净瓶"
                                    or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "百炼精铁"
                                     or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "魔兽要诀"
                                      or 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].名称 == "九转金丹"  then
        发送数据(玩家数据[id].连接id, 7, "#y/请勿上架低价值的物品")
        return 0
  -- elseif 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].总类 == 1 and 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].子类 == 20 then
  --     发送数据(玩家数据[id].连接id, 7, "#y/请勿上架低价值的物品")
  --      return 0
  -- elseif 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].总类 == 1 and 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].子类 == 1 then
  --     发送数据(玩家数据[id].连接id, 7, "#y/请勿上架低价值的物品")
  --      return 0
  -- elseif 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].总类 == 55 and 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].子类 == 1 then
  --     发送数据(玩家数据[id].连接id, 7, "#y/请勿上架低价值的物品")
  --      return 0
  -- elseif 玩家数据[id].物品[物品id].总类 == 2 and 道具类型 >=1 and 道具类型 <= 6 and 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].级别限制 < 140 then
  --     发送数据(玩家数据[id].连接id, 7, "#y/低于140的装备属于低价值物品,无法上架藏宝阁")
  --     return 0
  -- elseif 玩家数据[id].物品[物品id].总类 == 2 and 道具类型 >=10 and 道具类型 <=13 and 玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]].级别限制 < 100 then
  --     发送数据(玩家数据[id].连接id, 7, "#y/低于100的灵饰属于低价值物品,无法上架藏宝阁")
  --     return 0
  else
    --table.print(玩家数据[id].物品[玩家数据[id].角色.道具.包裹[编号]])
    if 道具类型 ~= nil then
      if 玩家数据[id].物品[物品id].类型=="武器" or 玩家数据[id].物品[物品id].类型=="衣服" or 玩家数据[id].物品[物品id].类型=="头盔" or 玩家数据[id].物品[物品id].类型=="项链" or 玩家数据[id].物品[物品id].类型=="腰带" or 玩家数据[id].物品[物品id].类型=="鞋子"  then
        类型 = "装备"
      elseif 玩家数据[id].物品[物品id].类型=="耳饰" or 玩家数据[id].物品[物品id].类型=="佩饰" or 玩家数据[id].物品[物品id].类型=="手镯" or 玩家数据[id].物品[物品id].类型=="戒指" then
        类型 = "灵饰"
      end
    end
    藏宝阁数据[类型][#藏宝阁数据[类型]+1] = {物品=玩家数据[id].物品[物品id],价格=价格,所有者=id,结束时间=os.time()+2592000}
    玩家数据[id].角色.道具.包裹[编号] = nil
    玩家数据[id].物品[物品id] = nil
    发送数据(玩家数据[id].连接id,3006,"66")
    发送数据(玩家数据[id].连接id, 7, "#y/上架成功")
    for i,v in pairs(观察藏宝阁数据) do
      if 玩家数据[i] ~= nil then
        发送数据(玩家数据[i].连接id,200756 , 藏宝阁数据)
      else
        观察藏宝阁数据[i] = nil
      end
    end
  end
end
function 藏宝阁处理类:藏宝阁购买处理(id,编号,类型)
  local 关键字 = "其他"
  if 类型 == 1 then
    关键字 = "装备"
  elseif 类型 == 3 then
    关键字 = "灵饰"
  elseif 类型 == 4 then
    关键字 = "召唤兽"
  elseif 类型 == 5 then
    关键字 = "银两"
  elseif 类型 == 6 then
    关键字 = "其他"
  elseif 类型 == 7 then
    关键字 = "角色"
  end
  if 藏宝阁数据[关键字][编号] == nil then
    发送数据(玩家数据[id].连接id, 7, "#y/数据已经刷新请重新打开藏宝阁")
    return 0
  elseif 藏宝阁数据[关键字][编号].结束时间 - os.time() <= 30 then
    发送数据(玩家数据[id].连接id, 7, "#y/该物品即将超时下架,无法进行购买处理")
    return 0
  else
    local 价格 = tonumber(藏宝阁数据[关键字][编号].价格)
    if 价格 == nil  then
        return
    end
    local 买家价格 = math.floor(价格)
     local 点卡=f函数.读配置(ServerDirectory.."玩家信息/账号" .. 玩家数据[id].账号 .. "/账号.txt", "账号信息", "点卡") + 0
    if 点卡==nil or 点卡=="空" then
        f函数.写配置(ServerDirectory.."玩家信息/账号" .. 玩家数据[id].账号 .. "/账号.txt", "账号信息", "点卡")
        点卡=0
    end
    if 点卡+0<买家价格 then
      常规提示(id,"点卡不够哦!!请注意充值购买!!!")
      return
    end

    local 对方id = 藏宝阁数据[关键字][编号].所有者
    if 关键字 ~= "银两" and 关键字 ~= "召唤兽" and 关键字 ~= "角色" then
      self.临时格子=角色处理类:取可用道具格子(玩家数据[id],"包裹")
      if self.临时格子==0 then
        发送数据(玩家数据[id].连接id,7,"#y/您当前的包裹空间已满，无法购买")
        return 0
      end
      self.可用id = 道具处理类:取道具编号(id)
      玩家数据[id].物品[self.可用id] = 藏宝阁数据[关键字][编号].物品
      玩家数据[id].角色.道具.包裹[self.临时格子] = self.可用id
      藏宝阁记录 = 藏宝阁记录..玩家数据[id].角色.名称.."通过藏宝阁购买ID:"..藏宝阁数据[关键字][编号].所有者.."物品["..藏宝阁数据[关键字][编号].物品.名称.."]花费"..价格.."银两\n"
      table.remove(藏宝阁数据[关键字],编号)
      发送数据(玩家数据[id].连接id,7,"#y/恭喜你购买物品成功")
    elseif 关键字 == "银两" then
      角色处理类:添加银子(玩家数据[id],藏宝阁数据[关键字][编号].数额,"藏宝阁购买"..关键字,1)
      藏宝阁记录 = 藏宝阁记录..玩家数据[id].角色.名称.."通过藏宝阁购买ID:"..藏宝阁数据[关键字][编号].所有者.."物品["..藏宝阁数据[关键字][编号].数额.."两银子]花费"..价格.."银两\n"
      table.remove(藏宝阁数据[关键字],编号)
      发送数据(玩家数据[id].连接id,7,"#y/恭喜你购买物品成功")
    elseif 关键字 == "召唤兽" then
      if #玩家数据[id].召唤兽.数据 >= 玩家数据[id].召唤兽.数据.召唤兽上限 then
        发送数据(玩家数据[id].连接id,7,"#y/您的召唤兽空间已满，无法购买")
        return 0
      else
        玩家数据[id].召唤兽.数据[#玩家数据[id].召唤兽.数据+1] = 藏宝阁数据[关键字][编号].召唤兽
        藏宝阁记录 = 藏宝阁记录..玩家数据[id].角色.名称.."通过藏宝阁购买ID:"..藏宝阁数据[关键字][编号].所有者.."物品["..藏宝阁数据[关键字][编号].召唤兽.名称.."]花费"..价格.."银两\n"
        table.remove(藏宝阁数据[关键字],编号)
        发送数据(玩家数据[id].连接id,7,"#y/恭喜你购买物品成功")
      end
    elseif 关键字 == "角色" then

    end
    角色处理类:扣除点卡(玩家数据[id],买家价格,"藏宝阁购买",id)
    发送数据(玩家数据[id].连接id,7,"#y/支付:"..买家价格.."点点卡!")
    价格=math.floor(价格*0.8)
    if 玩家数据[对方id] == nil then
      if 寄存数据[对方id] == nil then
        寄存数据[对方id] = {点卡=价格}
      else
        寄存数据[对方id].点卡=价格
      end
    else
        角色处理类:添加点卡(玩家数据[对方id],math.floor(价格),"藏宝阁出售",对方id)
        发送数据(玩家数据[对方id].连接id,7,"#y/藏宝阁物品成功出售,税后获得"..价格.."点点卡!!!")
    end
    for i,v in pairs(观察藏宝阁数据) do
      if 玩家数据[i] ~= nil then
        发送数据(玩家数据[i].连接id,200756 , 藏宝阁数据)
      else
        观察藏宝阁数据[i] = nil
      end
    end
  end
end


function 藏宝阁处理类:藏宝阁取回处理(id,编号,类型)
  local 关键字 = "其他"
  if 类型 == 1 then
    关键字 = "装备"
  elseif 类型 == 3 then
    关键字 = "灵饰"
  elseif 类型 == 4 then
    关键字 = "召唤兽"
  elseif 类型 == 5 then
    关键字 = "银两"
  elseif 类型 == 6 then
    关键字 = "其他"
  end
  if 类型 == 7 then
    发送数据(玩家数据[id].连接id, 7, "#y/取回角色请前往长安(335,262)找藏宝阁使者取回")
    return 0
  elseif 藏宝阁数据[关键字][编号] == nil then
    发送数据(玩家数据[id].连接id, 7, "#y/数据已经刷新请重新打开藏宝阁")
    return 0
  elseif 藏宝阁数据[关键字][编号].结束时间 - os.time() <= 30 then
    发送数据(玩家数据[id].连接id, 7, "#y/该物品即将超时下架,无法进行取回处理")
    return 0
  elseif 藏宝阁数据[关键字][编号].所有者 ~= id then
    发送数据(玩家数据[id].连接id, 7, "#y/这不是你的商品你无法取回")
    return 0
  else
    if 关键字 ~= "银两" and 关键字 ~= "召唤兽" then
      self.临时格子=角色处理类:取可用道具格子(玩家数据[id],"包裹")
      if self.临时格子==0 then
       发送数据(玩家数据[id].连接id,7,"#y/您当前的包裹空间已满，无法取回")
        return 0
      end
      self.可用id = 道具处理类:取道具编号(id)
      玩家数据[id].物品[self.可用id] = 藏宝阁数据[关键字][编号].物品
      玩家数据[id].角色.道具.包裹[self.临时格子] = self.可用id
      table.remove(藏宝阁数据[关键字],编号)
      发送数据(玩家数据[id].连接id,7,"#y/取回物品成功")
    elseif 关键字 == "银两" then
      角色处理类:添加银子(玩家数据[id],藏宝阁数据[关键字][编号].数额,"藏宝阁取回"..关键字)
      table.remove(藏宝阁数据[关键字],编号)
      发送数据(玩家数据[id].连接id,7,"#y/恭喜你取回物品成功")
    elseif 关键字 == "召唤兽" then
      if #玩家数据[id].召唤兽.数据 >= 7 then
        发送数据(玩家数据[id].连接id,7,"#y/您的召唤兽空间已满，无法取回")
          return 0
      else
        玩家数据[id].召唤兽.数据[#玩家数据[id].召唤兽.数据+1] = 藏宝阁数据[关键字][编号].召唤兽
        table.remove(藏宝阁数据[关键字],编号)
        发送数据(玩家数据[id].连接id,7,"#y/恭喜你取回物品成功")
      end
    end
    for i,v in pairs(观察藏宝阁数据) do
      if 玩家数据[i] ~= nil then
        发送数据(玩家数据[i].连接id,200756 , 藏宝阁数据)
      else
        观察藏宝阁数据[i] = nil
      end
    end
  end
end



function 藏宝阁处理类:更新(dt)
end

function 藏宝阁处理类:显示(x, y)
end

return 藏宝阁处理类
